IDEA + Vim,竟可以这么牛逼!! |
您所在的位置:网站首页 › ideavim easymotion › IDEA + Vim,竟可以这么牛逼!! |
本教程并不是单纯的vim操作介绍,更多的是与Intellj Idea进行配合。需要同时具备Intellj Idea和vim使用基础的同学学习。 简介Vim是一个高度可配置的文本编辑器,旨在高效地创建和更改任何类型的文本。它作为“vi”包含在大多数UNIX系统和Apple OS X中。Vim 非常稳定,并且正在不断开发以变得更好。 它的特点包括: 持久的、多级撤消树广泛的插件系统支持数百种编程语言和文件格式强大的搜索和替换与许多工具集成为什么要在 Intellj Idea 中使用 Vim?在我们学习某一项新技能,或者新的编程语言,新的编程模式。我们应该自问让我们做出这样的行为的驱动力是什么?学习完它之后它能解决你什么样的疼点问题。这样我们学习起来会更有动力一些。让我尝试学习Vim的理由:Mac平台下Intellj Idea的很多的常用的action都是需要command + option这个组合键,从我转到Mac下,就一直很懊恼,个人感觉这个按键很反人类。 作为一名服务端开发同学,还是会经常需要在linux服务器上去修改服务器的系统配置文件。比如nginx配置,这个时候不可避免的需要使用到vim编辑器。如果你不熟练 操作起来还是相当的难受的。 在Intellj Idea中安装了vim插件之后。是一个互补的状态 利用各自的优势 使得编程更有效率。 安装![]() 在Intellj Idea中 安装以下三个插件 IdeaVimIdeaVim-EasyMotionIdeaVimExtension![]() 发现图标像上面一样编程一个小方块的时候 就代表插件安装成功 Vim不得不说vim的学习成本还是有的,典型的入门很难 入门之后就会爱不释手。我这里对一些基础操作进行一些简单的总结和整理。 练习一:方向键联系 hjkl ![]() 根据我自己的经验总结下来从原生编辑器过度到Vim最不习惯的当属方向键的移动从原本的 方向键变成了hjkl 这个其实没有太多好说的 就是需要克服这一关。多练就行。(下图为 Gif 演示) ![]() ![]() CV大法好,毕竟大家有时候自嘲都是C V工程师 😈 所以 复制 粘贴 还是需要在第一时间学会,这样才能更好的coding💩。 yy复制当前行p粘贴![]() 练习三:在学多一点点 ![]() 在学习一些其他的命令 提交效率。 y p f h c i ![]() GIF 中步骤如下: yy复制当前行private String username;p将复制的内容进行粘贴f;跳转到字符;处,这里其实就是相当于行位。h向左移动一个光标ciw删除当前处的词,并进入插入模式password输入 password 完成v j d![]() GIF 中步骤如下: V进入内容选择模式kkk向上移动 3 行,并进行选中d删除选中部分块级删除「常用」di* da*![]() di"删除"内的内容,个人感觉这个还是非常常用了。也是初步在效率上优于传统的 intellj idea 的操作方式。如果想要删除之后马上进入插入模式 可以使用ci" ![]() di(删除(内的内容,如果想要删除之后马上进入插入模式 可以使用ci( ![]() di{删除{内的内容,如果想要删除之后马上进入插入模式 可以使用ci{ 各种进入插入模式i在光标之前,进入插入模式I在本行开头,进入插入模式a在光标之后,进入插入模式A在本行结尾,进入插入模式o在本行之后新增一行,并进入插入模式O在本行之前新增一行,并进入插入模式s删除当前字符,并进入插入模式S删除当前行中的所有文本,并进入插入模式在我最开始的学习 vim 的时候只知道i进入插入模式。后面才知道还有这么多种方式。 如果你真的是切换过来之后 这里所有的方式都能用到。 在IDEA Intellij小技巧和插件一文中简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件在日常编程中的一些常用小技巧。供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考。当然基本的hjkl移动光标和几种常见模式等等基本概念就略过不提了。为了确保只包含常用操作,这里提到的技巧都没有从现成文档里抄,而是凭记忆列出(不常用自然就不记得了)。估计会有所遗漏,慢慢再补充。 1.切换Vim模拟器状态 这个插件允许设置一个快捷键一键开启或关闭,在切换模式时会同时自动切换keymap,十分方便。默认键位是Ctrl+Alt+V,但这个键位覆盖了很常用的“抽取局部变量”功能,建议重设,在setting->keymap中查找VIM Emulator即可。 由于开启和关闭状态分别使用两套keymap,因此两套都需要设定。可以把两套keymap下的都设为一样的键,也就是用同一个键切换。但个人建议设为不同的键,这样能清楚知道当前处于那种模式中。并且,如果在开启Vim的插入模式下关闭Vim模拟器,下次进入时仍然是插入模式,比较混乱(因为你关闭模拟器就是为了使用默认keymap输入大段代码,重新开启Vim模拟器就是为了使用普通模式下的命令)。因此建议把Vim keymap中的Exit Insert Mode设为与另一个keymap的Vim Emulator相同的键(也就是进入Vim模拟器的快捷键)。例如,我使用的设定是: Default keymap -> Vim Emulator :Ctrl+;(用Ctrl+分号开启Vim模拟器) Vim keymap -> Vim Emulator : Ctrl+,(用Ctrl+逗号关闭Vim模拟器) Vim keymap -> Vim Emulator : Ctrl+;(用Ctrl+分号退出插入模式,进入普通模式) 这样,在任何时候只要连按两下ctrl+分号,就能保证必定在Vim模拟器的普通模式中。 2. ScrollOff参数 启动Intellij后在Vim模拟器下输入命令:set so=5可以令屏幕滚动时在光标上下方保留5行预览代码(也就是光标会在第5行触发向上滚动,或者在倒数第5行触发向下滚动)。在代码窗口比较狭小时(例如单步跟踪调试时)非常方便。可惜仅在Vim模拟器开启时有效。 3.行号定位 普通模式下输入行号G或:行号都能快速定位到某一行。区别在于前者在输入行号时屏幕上没有任何提示,后者则在Vim命令输入框中可以看到输入过程。(题外话:Sublime Text 2也是用:行号来快速定位到某行,应该是沿用了Vim的习惯) 4.进入修改 进入插入模式的方式有很多,直接选用合适的方式进入插入模式比进入后再用箭头键移动光标要好。常用的有: o -在当前行下方插入新行并自动缩进 O -在当前行上方插入新行并自动缩进(普通模式下的大写字母命令用shift+字母键输入,下同) i -在当前字符左方开始插入字符 a -在当前字符右方开始插入字符 I -光标移动到行首并进入插入模式 A -光标移动到行尾并进入插入模式 s -删除光标所在字符并进入插入模式 S -删除光标所在行并进入插入模式 c -删除光标所在位置周围某个范围的文本并进入插入模式。关于范围请看第5点,常用的组合有:caw -删除一个单词包括它后面的空格并开始插入;ciw -删除一个单词并开始插入;ci" -删除一个字符串内部文本并开始插入;c$ -从光标位置删除到行尾并开始插入;ct字符-从光标位置删除本行某个字符之前(保留该字符)并开始插入。等等。 C -删除光标位置到行尾的内容并进入插入模式(相当于c$) r -修改光标所在字符,然后返回普通模式 R -进入覆盖模式 5.范围操作 某些普通模式的动作命令后面可以追加一些表示范围的指令,表示该动作将作用在整个范围上。这类命令常用的有: d -删除一定范围内的文本 c -删除一定范围内的文本并进入插入模式 y -将范围内的文本放入0号和"号注册栏 v -选择范围内的文本 = -自动缩进范围内的文本 gU -将范围内的字符转换为大写 gu -将范围内的字符转换为小写 > -将范围中的内容缩进一格 >当前行缩进一格,==自动缩进当前行) $ -从光标位置到行尾 ^ -从光标位置到行首,不包含缩进空白 0 -从光标位置到行首,包含缩进空白 gg -从光标位置到文件开头 G -从光标位置到文件结尾 % -从光标位置到另一边匹配的括号 f -从光标位置到光标右边某个字符首次出现的位置,包括该字符 F -从光标位置到光标左边某个字符首次出现的位置,包括该字符 t -从光标位置到光标右边某个字符首次出现的位置,包括该字符 F -从光标位置到光标左边某个字符首次出现的位置,包括该字符 /正则表达式-从光标位置到下一个匹配正则表达式的位置(跨行) ?正则表达式-从光标位置到上一个匹配正则表达式的位置(跨行) aw -一个单词加一个空格(a可理解为“一个”,下同) iw -一个单词(i可理解为in,下同) a" -一个字符串包括双引号 i" -一个字符串内部文本 a< -一组< >包含的文本,包括号本身 同理类推:i |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |